#include <stdio.h>  
#include <stdlib.h>  
  
// 定义单例的结构体  
typedef struct Singleton {  
    int initialized; // 标记是否已初始化  
    // 可以在这里添加其他资源或属性  
} Singleton;  
  
// 单例实例指针  
static Singleton* instance = NULL;  
  
// 单例的初始化函数  
static void init_singleton() {  
    if (instance == NULL) {  
        instance = (Singleton*)malloc(sizeof(Singleton));  
        if (instance == NULL) {  
            fprintf(stderr, "Memory allocation failed\n");  
            exit(EXIT_FAILURE);  
        }  
        instance->initialized = 1; // 标记为已初始化  
        // 可以在这里添加其他初始化代码  
        printf("Singleton instance created\n");  
    }  
}  
  
// 获取单例实例的函数  
Singleton* get_singleton_instance() {  
    if (instance == NULL) {  
        init_singleton();  
    }  
    return instance;  
}  
  
// 释放单例实例（如果需要）  
void free_singleton_instance() {  
    if (instance != NULL) {  
        free(instance);  
        instance = NULL;  
    }  
}  
  
int main() {  
    // 获取单例实例  
    Singleton* singleton1 = get_singleton_instance();  
    Singleton* singleton2 = get_singleton_instance();  
  
    // 验证是否返回的是同一个实例  
    if (singleton1 == singleton2) {  
        printf("singleton1 and singleton2 are the same instance\n");  
    }  
  
    // 释放单例实例（在程序结束前）  
    free_singleton_instance();  
  
    return 0;  
}